FIT2-2023b 第05回 リスト
お知らせ
本日はZoom併用授業です
講師はピンシャキですが家族全員インフルAになりましたゆえ
みなさまもご自愛を
※接続数が少なめなので09:30頃まで授業開始を待ちます!
※SAさん教室にいると思うのでインカメラで教室の様子を写して欲しい
前回授業の振り返り
「ボールとパッドの接触判定」
最終的にはこんなコードになったはず
code:python
def update():
global ballx, bally, vx, vy, padx, speed, score
# 中略
if bally >= 195 and padx - 20 <= ballx <= padx + 20:
# padとボールが接触したとみなす
score = score + 100 # スコアを増やす
bally = 0 # y座標を0 (上辺)に戻す
ballx = pyxel.rndi(0, 199) # x座標はランダムに再設定
speed = speed + 0.5 # ボールを少し早くする
座標の位置関係を図にすると分かりやすい
https://gyazo.com/c90a2092e8c9c7612e7e41871e25f9e6
bally >= 195 = ボールがpadと同じ高さ以下になった
padx - 20 <= ballx <= padx + 20 padの左右幅内にボールの中心座標がある
上記が両立していれば「接触」と判定
⇔ 外周が掠っただけでは接触としない
本日の講義
https://gyazo.com/5d54f9525d2f769ba914c34131b56e4c
ボールを複数同時に制御する方法を教えます
リストを使ってボールを増やす際のコードの捉え方
for文で0, 1, 2と数字が取り出されるため、各リストのindexを使い X番目のボール を表現している
ballx[0], bally[0], vx[0], vy[0] … 1個目のボール
ballx[1], bally[1], vx[1], vy[1] … 2個目のボール
ballx[2], bally[2], vx[2], vy[2] … 3個目のボール
https://gyazo.com/1f6158ef976ee924992a4a1e14def2c5
B-10-3までは必修課題
B-10-4は任意課題とします
今日の講義が終われば、ゲーム開発に必要な要素技術は全て抑えたことになります
何を作るか、考え始めよう
wasdでダンジョン内を移動するゲーム
code:python
import pyxel
# 10x10のマップを二重配列で定義
map = [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, # mapの各数字が何に該当するかを定義
field = 0
block = 9
character = 1
# キャラクターのx,y座標
char_x = 5
char_y = 5
# mapを10x10にしたので、1マスの縦横幅は20
cell_width = 20
def update():
global char_x, char_y
# WASDでキャラクター移動 and 移動先がblockだったら移動キャンセル
char_x -= 1
char_y += 1
char_x += 1
char_y -= 1
def draw():
pyxel.cls(7)
# マップを描画
for x, row in enumerate(map):
for y, cell in enumerate(row):
color = 7
if cell == block:
color = 0
pyxel.rect(x * cell_width, y * cell_width, cell_width, cell_width, color)
# キャラクターを描画
pyxel.rect(char_x * cell_width, char_y * cell_width, cell_width, cell_width, 5)
pyxel.init(200, 200)
pyxel.run(update, draw)
https://gyazo.com/744ac606303dd4fa18a40592e4a68773
SA2名の成果物紹介も時間があれば
本日の課題
B-10-3までは必須課題
B-10-4は任意課題 (加点要素)
企画書 は是非考え始めるように、再来週までに一次提出が望ましいです